#include <iostream>
using namespace std;
class List                                    //定义单链表的结构 
{
public:
    int num;
    class List *next;
    void create();
    void Listout();
    void seek();
    void inser();
    void dele();
    void choose();
};
typedef class List Node;                     //将class list重定义为node
typedef Node *Link;                            //声明指针
Link top;
Link p,s;
void List::choose()
{
    List List1;
    int r;
    bool toD = true;
    while(toD)
    {
        cout<<"1, input data create a new table"<<endl;
        cout<<"2, print the table"<<endl;
        cout<<"3, find digital in the table"<<endl;
        cout<<"4, insert digital in the table"<<endl;
        cout<<"5, delete digital in the table"<<endl;
        cout<<"press the other key, select exit"<<endl;
        cin>>r;
        switch (r)
        {
            case 1:
                List1.create();                   //创建链表
                break;
            case 2:
                List1.Listout();                //显示表中的数据
                break;
            case 3:
                List1.seek();                 //查找链表中的数据
                break;
            case 4:
                List1.inser();                 //在链表中插入数据
                break;
            case 5:
                List1.dele();                 //在链表中删除数据
                break;
            default:
                toD = false;
                break;
        }
    }
}
void List::create()                           //创建链表操作
{
    int c;
    bool toC = true;
    top = new Node;
    (*top).next = NULL;
    p = top;
    while(toC)
    {
        cout<<"choose 1,input data";
        cout<<endl;
        cout<<"press the other key,the table is fulfil";
        cout<<endl;
        cin>>c;
        switch (c)
        {
            case 1:
                cout<<"input the data you want in the table";
                cout<<endl;
                s = new Node;
                cin>>(*s).num;
                (*p).next = s;
                (*s).next = NULL;
                p = (*p).next;                                //工作指针p后移
                break;
            default:
                toC = false;
                break;
        }
    }
    Listout();
}
void List::Listout()                              //进行输出操作
{
	p = (*top).next;
    while(p)
    {
        cout<<(*p).next<<"\t"<<"\t"<<(*p).num<<endl;
        p = (*p).next;
    }
}
void List::seek()                         // 进行查找操作
{
    int j = 1;
    int i;
	p = (*top).next;
    cout<<"please enter you want find position with "<<endl;
	cin>>i;
    while(p && j<i)
    {
        p = (*p).next;
        j++;
    }
    if(!p)
    {
        cout<<"seek error!";
        cout<<endl;
    }
    else
    {
        cout<<p<<"\t"<<"\t"<<(*p).num;
        cout<<endl;
    }
}
void List::inser()                    //进行插入操作 
{
    int j = 0;
    int i;
	p = (*top).next;
	cout<<"please input you want insert number"<<endl;
	cin>>num;
	cout<<"please input you want insert position"<<endl;
	cin>>i;
    while(p && j<i-1)
    {
        p = (*p).next;
        j++;
    }
    if(!p)
    {
        cout<<"insert error!";
        cout<<endl;
    }
    else
    {
        Link s;
        s = new Node;
        (*s).num = num;
        (*s).next = (*p).next;
        (*p).next = s;
    }
    Listout();
}
void List::dele()                       //进行删除操作 
{
    int j = 0;
    int i;
	p = top;
	cout<<"please input you want delete position"<<endl;
	cin>>i;
    while(p && j<i-1)
    {
        p = (*p).next;
        j++;
    }
    if(!p)
    {
        cout<<"delete error!";
        cout<<endl;
    }
    else
    {
        s = new Node;
        s = (*p).next;
        (*p).next = (*s).next;
    }
    Listout();
}
int main()
{
    List List1;
//    int r;
//    cout<<"1, input data create a new table"<<endl;
//    cout<<"2, print the table"<<endl;
//    cout<<"3, find digital in the table"<<endl;
//    cout<<"4, insert digital in the table"<<endl;
//    cout<<"5, delete digital in the table"<<endl;
//    cout<<"press the other key, select exit"<<endl;
//    cin>>r;
    List1.choose();
    return 0;
}

















































//    List List1;
//    int r;
//    bool toD = true;
//    while(toD)
//    {
//        cout<<"1, input data create a new table"<<endl;
//        cout<<"2, print the table"<<endl;
//        cout<<"3, find digital in the table"<<endl;
//        cout<<"4, insert digital in the table"<<endl;
//        cout<<"5, delete digital in the table"<<endl;
//        cout<<"press the other key, select exit"<<endl;
//        cin.clear();
//        cin>>r;
//        switch (r)
//        {
//            case 1:
//                List1.create();                   //创建链表
//                break;
//            case 2:
//                List1.Listout();                //显示表中的数据
//                break;
//            case 3:
//                List1.seek();                 //查找链表中的数据
//                break;
//            case 4:
//                List1.inser();                 //在链表中插入数据
//                break;
//            case 5:
//                List1.dele();                 //在链表中删除数据
//                break;
//            default:
//                toD = false;
//                break;
//        }
//    }









//#include <iostream>
//
//using namespace std;
//
//class List
//{
//    public:
//        List()
//        {
//            a = 0;
//            next = NULL;
//            ount++;
//        }
//        void inserted()
//        {
//            List *p = new List;
//            p->a = ount;
//            p->next = NULL;
//            p->next = this->next;
//            this->next = p;
//        }
//        void del()
//        {
//            List *p = this->next, *q;
//            while(p)
//            {
//                q = p;
//                p = p->next;
//                delete q;
//            }
//        }
//    private:
//        int a;
//        List *next;
//        static int ount;
//};
//int List::ount = 0;
//
//int main(){
//    List *p = new List;
//    p->inserted();
//    p->del();
//    delete p;
//    count<<5<<endl;
//    return 0;
//}
//#include <iostream>
//using namespace std;
//class List                                    //定义单链表的结构 
//{
//public:
//    int num;
//    class List *next;
//    void create();
//    void Listout();
//    int seek(int n);
//    int inser(int n);
//    void dele(int n);
//};
//typedef class List Node;                     //将class list重定义为node
//typedef Node *Link;                            //声明指针
//Link p,s;
//void List::create()                           //创建链表操作
//{
//    s = new Node;                            // 建立一个新的结点        
//    cout<<"please input you want to storing data：";
//    cout<<endl;
//    cin>>s->num;
//    s->next = NULL;
//    p->next = s;
//    p = p->next;                                //工作指针p后移 
//}
//void List::Listout()                              //进行输出操作 
//{
//    while(p)
//    {
//        cout<<p->next<<" "<<p->num<<endl;
//        p=p->next;
//    }
//}
//int List::seek(int i)                         // 进行查找操作 
//{
//    int j = 1;
//    while(p&&j<i)
//    {
//        p = p->next;
//        j++;
//    }
//    if(!p)
//    {
//        cout<<"查找 error!";
//        cout<<endl;
//        return 0;
//    }
//    else
//    {
//        cout<<p<<" "<<p->num;
//        return 1;
//    }
//}
//int List::inser(int i)                    //进行插入操作 
//{
//    int j = 0;
//    while(p&&j<i-1)
//    {
//        p = p->next;
//        j++;
//    }
//    if(!p)
//    {
//        cout<<"插入 error!";
//        cout<<endl;
//        return 0;
//    }
//    else
//    {
//        Link s;
//        s = new Node;
//        cin>>s->num;
//        s->next=p->next;
//        p->next=s;
//        return 1;
//    }
//}
//void List::dele(int i)                       //进行删除操作 
//{
//    int j = 1;
//    while(p&&j<i-1)
//    {
//        p = p->next;
//        j++;
//    }
//    if(!p)
//    {
//        cout<<"删除 error!";
//        cout<<endl;
//    }
//    else
//    {
//        Link q;
//        q = new Node;
//        q = p->next;
//        p->next = q->next;
//        delete q;
//    }
//}
//int main()
//{
//    List List1;
//    Link first;
//    int x;
//    int j;
//    first = new Node;
//    p = first;
//    cout<<"please input data de number:";
//    cin>>x;
//    for(int i=1;i<=x;i++)
//    {
//        cout<<"please input number "<<i<<" ";
//        cout<<endl;
//        List1.create();
//    }
//    cout<<"the data is :";
//    cout<<endl;
//    p = first->next;
//    List1.Listout();
//    cout<<endl;
//    p = first->next;
//    cout<<"请输入查找的位置:";
//    cin>>j;
//    List1.seek(j);
//    cout<<endl;
//    p = first->next;
//    cout<<"请输入要插入的位置:";
//    cin>>j;
//    List1.inser(j);
//    p = first->next;
//    List1.Listout();
//    p = first->next;
//    cout<<"请输入要删除的位置:";
//    cin>>j;
//    List1.dele(j);
//    p = first->next;
//    List1.Listout();
//    return 0;
//
//}

